﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
using System.IO;

namespace CoreCommon
{
    /// <summary>
    /// Класс содержит общие функции для вывода сообщений пользователю и вызова справки
    /// </summary>
    public static class Messages
    {
        /// <summary>
        /// Отображает для контрола всплывающую подсказку. Подсказка указывает на середину контрола.
        /// </summary>
        /// <param name="control">Контрол, для которого выводится подсказка</param>
        /// <param name="title">Название подсказки</param>
        /// <param name="text">Текст подсказки</param>
        /// <param name="toolTypeIcon">Иконка подсказки</param>
        /// <param name="duration">Длительность отображения в миллисекундах, если задано значение 0 - подсказка отображается до тех пор, пока пользователь на нее не кликнет</param>
        public static void ShowTip(Control control, string title, string text, ToolTipIcon toolTypeIcon, int duration)
        {
            ToolTip toolTip = new ToolTip();
            toolTip.ToolTipIcon = toolTypeIcon;
            toolTip.BackColor = SystemColors.Window;
            toolTip.ToolTipTitle = title;
            //toolTip.IsBalloon = true;
            toolTip.Active = true;
            toolTip.Show(text, control, control.Width / 2, control.Height / 2, duration);
        }

        /// <summary>
        /// Метод отображет сообщение в трее
        /// </summary>
        /// <param name="notifyIcon">Экземпляр класса NotifyIcon, для которого выводится сообщение</param>
        /// <param name="title">Заголовок сообщения</param>
        /// <param name="message">Текст сообщения</param>
        /// <param name="toolTipIcon">Значок сообщения "Внимание", "Ошибка" и пр.</param>
        /// <param name="duration">Длительность отображения выплывающей подсказки</param>
        public static void ShowNotify(NotifyIcon notifyIcon, string title, string message, int duration = 10, ToolTipIcon toolTipIcon = ToolTipIcon.Info)
        {
            notifyIcon.BalloonTipTitle = title;
            notifyIcon.BalloonTipText = message;
            notifyIcon.BalloonTipIcon = toolTipIcon;
            notifyIcon.Visible = true;
            notifyIcon.ShowBalloonTip(duration);
        }

        /// <summary>
        /// Вызов справки программы
        /// </summary>
        /// <param name="topic">Тема помощи</param>
        /// <param name="helpNavigator">Значение в навигаторе</param>
        public static void GetHelp(string topic, HelpNavigator helpNavigator)
        {
            try
            {
                Help.ShowHelp(null, Const.HELP_PATH, helpNavigator, topic + ".htm");
            }
            catch (Exception err)
            {
                MessageBox.Show(err.Message);
            }
        }

        /// <summary>
        /// Показ лог-файла приложения
        /// </summary>
        public static void ShowLog()
        {
            try
            {
                string filePath = Const.LOG_PATH;
                if (!File.Exists(filePath))
                    Log.ToFile("", filePath);
                System.Diagnostics.Process.Start("notepad.exe", filePath);
            }
            catch (Exception err)
            {
                Log.ToLog(err.Message);
            }

        }

    }
}
